/*
 *   项目名称：rpc-demo
 *   文件名称：com.xiaolon.rpc.proxy.MockServiceProxy
 *
 *   创建人：  ZHOU XIAO LONG
 *   创建日期：2024/12/4
 *
 */
package com.xiaolon.rpc.proxy;

import lombok.extern.slf4j.Slf4j;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * 类描述： MockServiceProxy
 **/
@Slf4j
public class MockServiceProxy implements InvocationHandler {
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        Class<?> returnType = method.getReturnType();
        log.info("mock invoke: "+method.getName());

        return getDefaultObject(returnType);
    }

    /**
     * 生成指定类型的默认值对象
     * @return
     */
    public Object getDefaultObject(Class<?> type){
        // 基本数据类型
        if(type.isPrimitive()){
            if(type == Boolean.class) return false;
            if(type == short.class) return (short) 0;
            if(type == int.class) return 0;
            if(type == long.class) return 0L;

        }
        // 引用对象类型
        return null;
    }
}